////数组中除了一个数其他数都出现三次，找出那个只出现一次的数
#include <iostream>
#include<vector>
using namespace std;
//class hjx
//{
//public:
//    int find_hjx(vector<int>& v)
//    {
//       int arr[32]={0};
//       for(auto e:v)
//       {
//           for(int i=0;i<32;i++)
//           {
//               if((e&(1<<i)))//不为0就行
//               {
//                   (arr[i])++;
//               }
//           }
//       }
////       for(int p=0;p<32;p++)
////       {
////           cout<<arr[p];
////       }
//       int num=0;
//       for(int i=0;i<32;i++)
//       {
//          if(arr[i]%3==1)
//          {
//              num=num|(1<<i);
//          }
//       }
//       return num;
//    }
//private:
//
//};
//int main()
//{
//    hjx h1;
//    vector<int> v1;
//    v1.push_back(3);
//    v1.push_back(160);
//    v1.push_back(3);
//    v1.push_back(3);
//
//    cout<<h1.find_hjx(v1);
//    return 0;
//}
//数组中除了两个个数出现一次 其他数都出现两次次，找出那两个只出现一次的数
class hjx
{
public:
   vector<int> find_hjx(vector<int>& v)
   {
       int num=0;
       for(auto e:v)
       {
           num^=e;
       }
        //分离两个数
        int i=0;
       for( i=0;i<32;i++)
       {
          if(num&(1<<i))
          {
              break;
          }
       }
       int num1=0,num2=0;
       for(auto e:v)
       {
           if(e&(1<<i))
           {
               num1^=e;
           }
           else
           {
               num2^=e;
           }
       }
       vector<int> ret;
       ret.push_back(num1);
       ret.push_back(num2);
       return ret;
   }
private:


};
int main()
{
    hjx h1;
    vector<int> v;
    v.push_back(1);
    v.push_back(2);
    v.push_back(1);
    v.push_back(3);
    v.push_back(2);
    v.push_back(5);
    vector<int> ret;
    ret=h1.find_hjx(v);
    for(auto e:ret)
    {
        cout<<e<<" ";
    }
    return 0;
}






















